#define ASMSTR(S) "\t" S "\n"

int main(int argc, char **argv) {
    asm volatile(
        ASMSTR(".intel_syntax noprefix")

        ASMSTR("dec rdi;")
        ASMSTR("mov r15, rdi;")
        ASMSTR("test rdi, rdi;")
        ASMSTR("jne Y1;")
        ASMSTR("jmp B1;")
        ASMSTR(".byte 0x2f")
        ASMSTR("jmp A1;")
        ASMSTR("jmp Z1;")
        ASMSTR("jmp A1;")
        ASMSTR("jmp Z1;")
        ASMSTR("jmp A1;")
        ASMSTR("jmp Z1;")
        ASMSTR("jmp A1;")
        ASMSTR("jmp Z1;")
        ASMSTR("jmp A1;")
        ASMSTR("jmp Z1;")
        ASMSTR("jmp A1;")
        ASMSTR("jmp Z1;")
        ASMSTR(".global Y1")
        ASMSTR("Y1:")
        ASMSTR("xor rbx, rbx")
        ASMSTR("mov bx, word ptr [X1];")
        ASMSTR("sub rbx, 0xf1dc;")
        ASMSTR("push rbx;")
        ASMSTR("lea r8, [rip + A1];")
        ASMSTR(".global A1")
        ASMSTR("A1:")
        ASMSTR("pop r9;")
        ASMSTR("add r8, r9;")
        ASMSTR("call r8;")
        ASMSTR(".global Z1")
        ASMSTR("Z1:")
        ASMSTR("call A1;")
        ASMSTR(".global X1")
        ASMSTR("X1:")
        ASMSTR("jmp A1;")
        ASMSTR(".global B1")
        ASMSTR("B1:")



        ASMSTR("test r15, r15;")
        ASMSTR("jne Y2;")
        ASMSTR("jmp B2;")
        ASMSTR("jmp A2;")
        ASMSTR("jmp Z2;")
        ASMSTR("jmp A2;")
        ASMSTR("jmp Z2;")
        ASMSTR("jmp A2;")
        ASMSTR("jmp Z2;")
        ASMSTR("jmp A2;")
        ASMSTR("jmp Z2;")
        ASMSTR("jmp A2;")
        ASMSTR("jmp Z2;")
        ASMSTR("jmp A2;")
        ASMSTR("jmp Z2;")
        ASMSTR(".global Y2")
        ASMSTR("Y2:")
        ASMSTR("xor rbx, rbx")
        ASMSTR("mov bx, word ptr [X2];")
        ASMSTR("sub rbx, 0xf1dc;")
        ASMSTR("push rbx;")
        ASMSTR("lea r8, [rip + A2];")
        ASMSTR(".global A2")
        ASMSTR("A2:")
        ASMSTR("pop r9;")
        ASMSTR("add r8, r9;")
        ASMSTR("call r8;")
        ASMSTR(".global Z2")
        ASMSTR("Z2:")
        ASMSTR("call A2;")
        ASMSTR(".global X2")
        ASMSTR("X2:")
        ASMSTR("jmp A2;")
        ASMSTR(".global B2")
        ASMSTR("B2:")








        ASMSTR("test r15, r15;")
        ASMSTR("jne Y3;")
        ASMSTR("jmp B3;")
        ASMSTR("jmp A3;")
        ASMSTR("jmp Z3;")
        ASMSTR("jmp A3;")
        ASMSTR("jmp Z3;")
        ASMSTR("jmp A3;")
        ASMSTR("jmp Z3;")
        ASMSTR("jmp A3;")
        ASMSTR("jmp Z3;")
        ASMSTR("jmp A3;")
        ASMSTR("jmp Z3;")
        ASMSTR("jmp A3;")
        ASMSTR("jmp Z3;")
        ASMSTR(".global Y3")
        ASMSTR("Y3:")
        ASMSTR("xor rbx, rbx")
        ASMSTR("mov bx, word ptr [X3];")
        ASMSTR("sub rbx, 0xf1dc;")
        ASMSTR("push rbx;")
        ASMSTR("lea r8, [rip + A3];")
        ASMSTR(".global A3")
        ASMSTR("A3:")
        ASMSTR("pop r9;")
        ASMSTR("add r8, r9;")
        ASMSTR("call r8;")
        ASMSTR(".global Z3")
        ASMSTR("Z3:")
        ASMSTR("call A3;")
        ASMSTR(".global X3")
        ASMSTR("X3:")
        ASMSTR("jmp A3;")
        ASMSTR(".global B3")
        ASMSTR("B3:")





        ASMSTR("test r15, r15;")
        ASMSTR("jne Y4;")
        ASMSTR("jmp B4;")
        ASMSTR("jmp A4;")
        ASMSTR("jmp Z4;")
        ASMSTR("jmp A4;")
        ASMSTR("jmp Z4;")
        ASMSTR("jmp A4;")
        ASMSTR("jmp Z4;")
        ASMSTR("jmp A4;")
        ASMSTR("jmp Z4;")
        ASMSTR("jmp A4;")
        ASMSTR("jmp Z4;")
        ASMSTR("jmp A4;")
        ASMSTR("jmp Z4;")
        ASMSTR(".global Y4")
        ASMSTR("Y4:")
        ASMSTR("xor rbx, rbx")
        ASMSTR("mov bx, word ptr [X4];")
        ASMSTR("sub rbx, 0xf1dc;")
        ASMSTR("push rbx;")
        ASMSTR("lea r8, [rip + A4];")
        ASMSTR(".global A4")
        ASMSTR("A4:")
        ASMSTR("pop r9;")
        ASMSTR("add r8, r9;")
        ASMSTR("call r8;")
        ASMSTR(".global Z4")
        ASMSTR("Z4:")
        ASMSTR("call A4;")
        ASMSTR(".global X4")
        ASMSTR("X4:")
        ASMSTR("jmp A4;")
        ASMSTR(".global B4")
        ASMSTR("B4:")





        ASMSTR("test r15, r15;")
        ASMSTR("jne Y5;")
        ASMSTR("jmp B5;")
        ASMSTR("jmp A5;")
        ASMSTR("jmp Z5;")
        ASMSTR("jmp A5;")
        ASMSTR("jmp Z5;")
        ASMSTR("jmp A5;")
        ASMSTR("jmp Z5;")
        ASMSTR("jmp A5;")
        ASMSTR("jmp Z5;")
        ASMSTR("jmp A5;")
        ASMSTR("jmp Z5;")
        ASMSTR("jmp A5;")
        ASMSTR("jmp Z5;")
        ASMSTR(".global Y5")
        ASMSTR("Y5:")
        ASMSTR("xor rbx, rbx")
        ASMSTR("mov bx, word ptr [X5];")
        ASMSTR("sub rbx, 0xf1dc;")
        ASMSTR("push rbx;")
        ASMSTR("lea r8, [rip + A5];")
        ASMSTR(".global A5")
        ASMSTR("A5:")
        ASMSTR("pop r9;")
        ASMSTR("add r8, r9;")
        ASMSTR("call r8;")
        ASMSTR(".global Z5")
        ASMSTR("Z5:")
        ASMSTR("call A5;")
        ASMSTR(".global X5")
        ASMSTR("X5:")
        ASMSTR("jmp A5;")
        ASMSTR(".global B5")
        ASMSTR("B5:")





        ASMSTR("test r15, r15;")
        ASMSTR("jne Y6;")
        ASMSTR("jmp B6;")
        ASMSTR("jmp A6;")
        ASMSTR("jmp Z6;")
        ASMSTR("jmp A6;")
        ASMSTR("jmp Z6;")
        ASMSTR("jmp A6;")
        ASMSTR("jmp Z6;")
        ASMSTR("jmp A6;")
        ASMSTR("jmp Z6;")
        ASMSTR("jmp A6;")
        ASMSTR("jmp Z6;")
        ASMSTR("jmp A6;")
        ASMSTR("jmp Z6;")
        ASMSTR(".global Y6")
        ASMSTR("Y6:")
        ASMSTR("xor rbx, rbx")
        ASMSTR("mov bx, word ptr [X6];")
        ASMSTR("sub rbx, 0xf1dc;")
        ASMSTR("push rbx;")
        ASMSTR("lea r8, [rip + A6];")
        ASMSTR(".global A6")
        ASMSTR("A6:")
        ASMSTR("pop r9;")
        ASMSTR("add r8, r9;")
        ASMSTR("call r8;")
        ASMSTR(".global Z6")
        ASMSTR("Z6:")
        ASMSTR("call A6;")
        ASMSTR(".global X6")
        ASMSTR("X6:")
        ASMSTR("jmp A6;")
        ASMSTR(".global B6")
        ASMSTR("B6:")






        ASMSTR("test r15, r15;")
        ASMSTR("jne Y7;")
        ASMSTR("jmp B7;")
        ASMSTR("jmp A7;")
        ASMSTR("jmp Z7;")
        ASMSTR("jmp A7;")
        ASMSTR("jmp Z7;")
        ASMSTR("jmp A7;")
        ASMSTR("jmp Z7;")
        ASMSTR("jmp A7;")
        ASMSTR("jmp Z7;")
        ASMSTR("jmp A7;")
        ASMSTR("jmp Z7;")
        ASMSTR("jmp A7;")
        ASMSTR("jmp Z7;")
        ASMSTR(".global Y7")
        ASMSTR("Y7:")
        ASMSTR("xor rbx, rbx")
        ASMSTR("mov bx, word ptr [X7];")
        ASMSTR("sub rbx, 0xf1dc;")
        ASMSTR("push rbx;")
        ASMSTR("lea r8, [rip + A7];")
        ASMSTR(".global A7")
        ASMSTR("A7:")
        ASMSTR("pop r9;")
        ASMSTR("add r8, r9;")
        ASMSTR("call r8;")
        ASMSTR(".global Z7")
        ASMSTR("Z7:")
        ASMSTR("call A7;")
        ASMSTR(".global X7")
        ASMSTR("X7:")
        ASMSTR("jmp A7;")
        ASMSTR(".global B7")
        ASMSTR("B7:")





        ASMSTR("test r15, r15;")
        ASMSTR("jne Y8;")
        ASMSTR("jmp B8;")
        ASMSTR("jmp A8;")
        ASMSTR("jmp Z8;")
        ASMSTR("jmp A8;")
        ASMSTR("jmp Z8;")
        ASMSTR("jmp A8;")
        ASMSTR("jmp Z8;")
        ASMSTR("jmp A8;")
        ASMSTR("jmp Z8;")
        ASMSTR("jmp A8;")
        ASMSTR("jmp Z8;")
        ASMSTR("jmp A8;")
        ASMSTR("jmp Z8;")
        ASMSTR(".global Y8")
        ASMSTR("Y8:")
        ASMSTR("xor rbx, rbx")
        ASMSTR("mov bx, word ptr [X8];")
        ASMSTR("sub rbx, 0xf1dc;")
        ASMSTR("push rbx;")
        ASMSTR("lea r8, [rip + A8];")
        ASMSTR(".global A8")
        ASMSTR("A8:")
        ASMSTR("pop r9;")
        ASMSTR("add r8, r9;")
        ASMSTR("call r8;")
        ASMSTR(".global Z8")
        ASMSTR("Z8:")
        ASMSTR("call A8;")
        ASMSTR(".global X8")
        ASMSTR("X8:")
        ASMSTR("jmp A8;")
        ASMSTR(".global B8")
        ASMSTR("B8:")





        ASMSTR("test r15, r15;")
        ASMSTR("jne Y9;")
        ASMSTR("jmp B9;")
        ASMSTR("jmp A9;")
        ASMSTR("jmp Z9;")
        ASMSTR("jmp A9;")
        ASMSTR("jmp Z9;")
        ASMSTR("jmp A9;")
        ASMSTR("jmp Z9;")
        ASMSTR("jmp A9;")
        ASMSTR("jmp Z9;")
        ASMSTR("jmp A9;")
        ASMSTR("jmp Z9;")
        ASMSTR("jmp A9;")
        ASMSTR("jmp Z9;")
        ASMSTR(".global Y9")
        ASMSTR("Y9:")
        ASMSTR("xor rbx, rbx")
        ASMSTR("mov bx, word ptr [X9];")
        ASMSTR("sub rbx, 0xf1dc;")
        ASMSTR("push rbx;")
        ASMSTR("lea r8, [rip + A9];")
        ASMSTR(".global A9")
        ASMSTR("A9:")
        ASMSTR("pop r9;")
        ASMSTR("add r8, r9;")
        ASMSTR("call r8;")
        ASMSTR(".global Z9")
        ASMSTR("Z9:")
        ASMSTR("call A9;")
        ASMSTR(".global X9")
        ASMSTR("X9:")
        ASMSTR("jmp A9;")
        ASMSTR(".global B9")
        ASMSTR("B9:")





        ASMSTR("mov rax, 60;")
        ASMSTR("mov rdi, 0;")
        ASMSTR("syscall;")


        ASMSTR("ret;")

        ASMSTR(".att_syntax;")
        );
}
